1. Field
The described embodiments relate to computing devices and program code that executes thereon. More specifically, the described embodiments relate to determining the vulnerability of program code to soft errors in computing devices.
2. Related Art
Computing devices typically include circuits (e.g., integrated circuits, etc.) that are susceptible to “soft errors.” Soft errors occur when data in a circuit changes due to an event such a high-energy particle impacting the circuit, electromagnetic noise effects, etc. For example, a neutron from a cosmic ray may impact a circuit and change a logical “1” (or high voltage value) stored in the circuit to a logical “0” (or low voltage value) or vice versa. Program code (e.g., applications, operating systems, firmware, etc.) executed by such a computing device can encounter errors when soft errors occur in architectural structures in the computing device that are being accessed by the program code. For example, program code can encounter an error when a logical value for a bit stored in a register or at a memory location in the computing device changes due to a soft error and the erroneous value is read and used by the program code.
In order to determine program codes' vulnerability soft errors, designers have created program code testing mechanisms. These existing program code testing mechanisms are configured to determine the vulnerability of individual/single threads of execution in program code to soft errors. For example, one such program code testing mechanism models individual threads in program code as a sequence of instructions and determines the vulnerability of the individual thread to soft errors based on the sequence of instructions. However, existing program code testing mechanisms do not determine the vulnerability to soft errors of multi-threaded program code, e.g., applications, operating system routines, etc. for which two or more threads separately perform accesses to shared architectural structures. Because the vulnerability of program code to soft errors is potentially different when two or more threads of multi-threaded program code separately perform accesses to shared architectural structures, existing program code testing mechanisms do not completely characterize program codes' vulnerability to soft errors.
Throughout the figures and the description, like reference numerals refer to the same figure elements.